import UcRequest, { UcResponse } from "./ucRequest";

/**
 * 同步退出请求
 * 
 * 该请求发出后将获得退出论坛账户的链接，客户浏览器中访问该链接即可实现`同步退出`
 */
export default class UserSynLogoutRequest extends UcRequest
{
    module = "user"
    action = "synlogout"
    httpMethod = "post"
}

export class UserSynLogoutResponse extends UcResponse
{
    constructor(rawData){
        super(rawData)
        // 如果在UCenter中当前应用的“是否开启同步登录”选项设置为否，异步退出接口将返回空字符串；
        // 否则UCenter将返回含有一到多个<script>标签的字符串，每个<script>标签中包含一个将“是否开启同步登录”设置为“是”的应用
        // 找到要退出的应用的script标签，访问script中的链接即可完成同步退出的操作
        let testLogoutUrl = /(?<=\ssrc=(?<quot>\"|\'))(?<url>.*?)(?=\k<quot>)/, // 构造匹配bbs对应的url的正则表达式
            matched, logoutUrl = "";
        while((matched = testLogoutUrl.exec(respRaw)) !== null){
            if(typeof matched.groups.url === 'string' && matched.groups.url.startsWith(ucConfig.bbsAppUrl)){
                logoutUrl = matched.groups.url
                break;
            }
        }
        if(typeof logoutUrl === 'string' && logoutUrl.length > 0){
            this.errCode = 1;
            this.errMsg = '操作成功';
            this.isSuccess = true;
            this.logoutUrl = logoutUrl;
        }else{
            this.errCode = -1;
            this.errMsg = '操作失败：'+(respRaw.length>0 ? 
                '1.请检查论坛主URl是否和UCenter中的一致；2.请检查UCenter中论坛应用是否开启同步登陆':
                '1. 请检查账户是否存在；2.请检查UCenter中当前应用以及论坛应用是否开启同步登陆');
            this.isSuccess = false;
        }
    }
}